package sv.com.action.catalogos;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import net.sf.json.JSONObject;
import sv.com.action.comun.ComunAction;
import sv.com.modelo.embarcacion.Puerto;
import sv.com.objetos.auxiliares.Constantes;
import sv.com.objetos.auxiliares.Consulta;
import sv.com.objetos.auxiliares.Listas;
import sv.com.objetos.jqgrid.JQGridJSONModel;
import sv.com.objetos.jqgrid.JQGridRow;

public class PuertoAction extends ComunAction {
	
	
	private static final long serialVersionUID = 1L;
	Puerto puerto = new Puerto();
	
	
	public long getIdPuerto() {
		return puerto.getIdPuerto();
	}

	public void setIdPuerto(long idPuerto) {
		puerto.setIdPuerto(idPuerto);
	}

	public String getNombrePuerto() {
		return puerto.getNombrePuerto();
	}

	public void setNombrePuerto(String nombrePuerto) {
		puerto.setNombrePuerto(nombrePuerto);
	}

	public String getDescripcion() {
		return puerto.getDescripcion();
	}

	public void setDescripcion(String descripcion) {
		puerto.setDescripcion(descripcion);
	}

	public String toString() {
		return puerto.toString();
	}


	public void mapaDeMetodos(){
		String metodo=getOper();
		if(metodo==null) metodo = CONS;
		if(metodo.equals("cargarPuertos")) cargarPuertos();		
		else if(metodo.equals(AGR)) agregar();
		else if(metodo.equals(MOD)) modificar();
		else if(metodo.equals(ELI)) eliminar();
		//else if(metodo.equals("eliminar")) eliminar();
	}
	
public void eliminar(){		
		try {					
			servicioGenerico.eliminar(puerto,Long.valueOf(this.getId()));
			
		} catch (Exception e) {
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}		
	}
	
	public void agregar(){
		try {
			servicioGenerico.agregar(puerto);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}
	}
	
	public void modificar(){
	
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		List<Puerto> lista=null;
		propiedades.add("idPuerto");
		valores.add(Long.valueOf(this.getId()));
		tiposConsulta.add(Consulta.IGUAL);
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		try {
			lista=servicioGenerico.cargarTodosV2(Puerto.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			Puerto puertoMod = lista.get(0);
			
			puertoMod.setNombrePuerto(this.getNombrePuerto());
			puertoMod.setDescripcion(this.getDescripcion());		
			servicioGenerico.modificar(puertoMod);
		} catch (Exception e) {
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}		
	}
	
		
	@SuppressWarnings("unchecked")
	public void cargarPuertos(){
		try{
			JQGridJSONModel json= new JQGridJSONModel();
			int pagina = getPage();
			int bloque = getRows();
			
			List<JQGridRow> rows = new ArrayList<JQGridRow>();
			
			Integer totalColumnas = new Integer(0);
			List<Puerto> lista=null;
			
			HashMap<String, Object> parametros = new HashMap<String, Object>();
			ArrayList<String> propiedades=new ArrayList<String>();
			ArrayList<Object> valores = new ArrayList<Object>();
			ArrayList<String> tiposConsulta = new ArrayList<String>();

			if(get_search()){
				HashMap<String, Object> filtros=obtenerFiltros();
				propiedades.addAll((ArrayList)filtros.get("propiedades"));
				valores.addAll((ArrayList)filtros.get("valores"));
				tiposConsulta.addAll((ArrayList)filtros.get("tiposConsulta"));

			}

			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros.put("ordenarPor", "idPuerto asc");
			
			totalColumnas = servicioGenerico.tamanoTotalListaCargarTodosV2(Puerto.class, parametros);
			lista=servicioGenerico.cargarTodosV2(Puerto.class, parametros, pagina, bloque);
			
			json.setRecords(totalColumnas);
			JQGridRow row = null; 
			List<String> cells = null; 
			for(Puerto objeto:lista){
				row = new JQGridRow(); 
				cells = new ArrayList<String>();
				row.setId(objeto.getIdPuerto());
				cells.add(objeto.getIdPuerto()+"");
				cells.add(objeto.getNombrePuerto());
				cells.add(objeto.getDescripcion());
				
				row.setCell(cells); 
				rows.add(row);
			}
			json.setPage(String.valueOf(pagina)); 
			json.setTotal(String.valueOf(Constantes.calcularNumeroPaginas(totalColumnas,getRows())));
			json.setRows(rows);
			
			JSONObject o = JSONObject.fromObject(json);			
			enviarJsonNavegador(o);
			
		}catch (Exception e) {
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}
		return;
	}
}